package com.qiangesoft.bootcodegen.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.qiangesoft.bootcodegen.entity.BcgDataSource;
import com.qiangesoft.bootcodegen.pojo.bo.BcgTableBO;
import com.qiangesoft.bootcodegen.pojo.bo.BcgTableColumnBO;
import com.qiangesoft.bootcodegen.pojo.dto.BcgDataSourceDTO;
import com.qiangesoft.bootcodegen.pojo.query.BcgDataSourceQuery;
import com.qiangesoft.bootcodegen.pojo.query.PageQuery;
import com.qiangesoft.bootcodegen.pojo.vo.PageResultVO;

import java.util.List;

/**
 * <p>
 * 数据源 服务类
 * </p>
 *
 * @author qiangesoft
 * @date 2024-03-13
 */
public interface IBcgDataSourceService extends IService<BcgDataSource> {

    /**
     * 初始化数据源
     */
    void initDataSource();

    /**
     * 新增数据源
     *
     * @param dataSourceDTO
     */
    void saveDataSource(BcgDataSourceDTO dataSourceDTO);

    /**
     * 删除数据源
     *
     * @param ids
     */
    void removeDataSource(List<Long> ids);

    /**
     * 修改数据源
     *
     * @param id
     * @param dataSourceDTO
     */
    void updateDataSource(Long id, BcgDataSourceDTO dataSourceDTO);

    /**
     * 分页查询数据源
     *
     * @param pageQuery
     * @param dataSourceQuery
     * @return
     */
    PageResultVO<BcgDataSource> listDataSource(PageQuery pageQuery, BcgDataSourceQuery dataSourceQuery);

    /**
     * 数据源列表
     *
     * @param dataSourceQuery
     * @return
     */
    List<BcgDataSource> listAllDataSource(BcgDataSourceQuery dataSourceQuery);

    /**
     * 查询数据库表
     *
     * @param pageQuery
     * @param dataSourceId
     * @return
     */
    PageResultVO<BcgTableBO> listTable(PageQuery pageQuery, Long dataSourceId);

    /**
     * 查询数据库表字段
     *
     * @param dataSourceId
     * @param tableName
     * @return
     */
    List<BcgTableColumnBO> listTableColumn(Long dataSourceId, String tableName);

    /**
     * 数据源连接
     *
     * @param id
     */
    void connection(Long id);
}
